// 引入
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

// 连接数据库
// localhost itcast数据库
// 如果itcast数据库不存在，当插入第一条数据库之后，自动创建
mongoose.connect('mongodb://localhost/itcast');

// 设计集合结构/表结构
// 字段名称就是表结构中的属性名称 
const userSchema = new Schema({
	username: {
		type: String,
		required: true
	},
	password: {
		type: String,
		required: true
	},
	email: {
		type: String
	}
});

// 将文档结构发布为模型
// mongoose.model方法就是用来将一个架构发布为model
// 第一个参数：传入一个大写名词单数字符串，用来表示数据库名称，mongoose会自动将
// 大写名词的字符串 生成 小写复数 的集合名词 User -> users
// 第二个参数， 架构Schema
// 返回值：模型构造函数
const User = mongoose.model('User', userSchema);

// 当有了模型构造数据之后，就可以使用这个构造函数对user集合中的数据进行增删改查了

// 增加数据
const admin = new User({
	username: 'admin',
	password: '123456',
	email: 'admin@123.com'
});
admin.save().then((res) => {
	console.log(res);
	console.log('保存成功');
});

// 查询数据
// 1. 查询所有
console.log('----------查询所有-------------------');
User.find().then(res => console.log(res));

// 按条件查询,返回一个数组
console.log('----------按条件查询-------------------');
User.find({ username: 'ZS' }).then(res => console.log(res));


// 只查询一个，只返回一个对象
console.log('----------只查询一个-------------------');
User.findOne({ username: 'ZS' }).then(res => console.log(res));

// 删除数据
User.deleteMany({ username: 'ZS' }).then(res => console.log(res));

// 更新数据
User.findByIdAndUpdate("61061a42c988a30d10ec8e1d", { password: '123' })
	.then(res => console.log(res));
